<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<style>
.KEYW {
	color: #933;
}

.COMM {
	color: #bbb;
	font-style: italic;
}

.NUMB {
	color: #393;
}

.STRN {
	color: #393;
}

.REGX {
	color: #339;
}

.line {
	border-right: 1px dotted #666;
	color: #666;
	font-style: normal;
}
</style>
</head>
<body>
	<pre>
		<span class='line'>  1</span> <span class="PUNC">(</span><span
			class="KEYW">function</span><span class="PUNC">(</span><span
			class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>  2</span> 
<span class='line'>  3</span> </span><span class="COMM">/**
<span class='line'>  4</span>  * Initialise our provider. This function should only be called 
<span class='line'>  5</span>  * from within mapstraction code, not exposed as part of the API.
<span class='line'>  6</span>  * @private
<span class='line'>  7</span>  */</span><span class="WHIT">
<span class='line'>  8</span> </span><span class="KEYW">var</span><span
			class="WHIT"> </span><span class="NAME">init</span><span class="WHIT"> </span><span
			class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span
			class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span
			class="PUNC">{</span><span class="WHIT">
<span class='line'>  9</span> </span><span class="WHIT">	</span><span
			class="NAME">this.invoker.go</span><span class="PUNC">(</span><span
			class="STRN">'init'</span><span class="PUNC">)</span><span
			class="PUNC">;</span><span class="WHIT">
<span class='line'> 10</span> </span><span class="PUNC">}</span><span
			class="PUNC">;</span><span class="WHIT">
<span class='line'> 11</span> 
<span class='line'> 12</span> </span><span class="COMM">/**
<span class='line'> 13</span>  * Geocoder instantiates a geocoder with some API choice
<span class='line'> 14</span>  * @name mxn.Geocoder
<span class='line'> 15</span>  * @constructor
<span class='line'> 16</span>  * @param {String} api The API to use, currently only 'mapquest' is supported
<span class='line'> 17</span>  * @param {Function} callback The function to call when a geocode request returns (function(waypoint))
<span class='line'> 18</span>  * @param {Function} error_callback The optional function to call when a geocode request fails
<span class='line'> 19</span>  * @exports Geocoder as mxn.Geocoder
<span class='line'> 20</span>  */</span><span class="WHIT">
<span class='line'> 21</span> </span><span class="KEYW">var</span><span
			class="WHIT"> </span><span class="NAME">Geocoder</span><span
			class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span
			class="NAME">mxn.Geocoder</span><span class="WHIT"> </span><span
			class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span
			class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">api</span><span
			class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span
			class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">error_callback</span><span
			class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span
			class="WHIT">
<span class='line'> 22</span> </span><span class="WHIT">	</span><span
			class="NAME">this.api</span><span class="WHIT"> </span><span
			class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">api</span><span
			class="PUNC">;</span><span class="WHIT">
<span class='line'> 23</span> </span><span class="WHIT">	</span><span
			class="NAME">this.geocoders</span><span class="WHIT"> </span><span
			class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span
			class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 24</span> </span><span class="WHIT">	</span><span
			class="NAME">this.callback</span><span class="WHIT"> </span><span
			class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">callback</span><span
			class="PUNC">;</span><span class="WHIT">
<span class='line'> 25</span> </span><span class="WHIT">	</span><span
			class="NAME">this.error_callback</span><span class="WHIT"> </span><span
			class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">error_callback</span><span
			class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span
			class="KEYW">function</span><span class="PUNC">(</span><span
			class="PUNC">)</span><span class="PUNC">{</span><span class="PUNC">}</span><span
			class="PUNC">;</span><span class="WHIT">
<span class='line'> 26</span> </span><span class="WHIT">	  </span><span
			class="WHIT">
<span class='line'> 27</span> </span><span class="WHIT">	</span><span
			class="COMM">// set up our invoker for calling API methods</span><span
			class="WHIT">
<span class='line'> 28</span> </span><span class="WHIT">	</span><span
			class="NAME">this.invoker</span><span class="WHIT"> </span><span
			class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span
			class="WHIT"> </span><span class="NAME">mxn.Invoker</span><span
			class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span
			class="WHIT"> </span><span class="STRN">'Geocoder'</span><span
			class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span
			class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span
			class="WHIT"> </span><span class="KEYW">return</span><span
			class="WHIT"> </span><span class="NAME">this.api</span><span
			class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span
			class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="WHIT">	</span><span
			class="NAME">init.apply</span><span class="PUNC">(</span><span
			class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span
			class="WHIT">
<span class='line'> 30</span> </span><span class="PUNC">}</span><span
			class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> 
<span class='line'> 32</span> </span><span class="NAME">mxn.addProxyMethods</span><span
			class="PUNC">(</span><span class="NAME">Geocoder</span><span
			class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span
			class="WHIT">
<span class='line'> 33</span> </span><span class="WHIT">	</span><span
			class="WHIT">
<span class='line'> 34</span> </span><span class="WHIT">	</span><span
			class="COMM">/**
<span class='line'> 35</span> 	 * Geocodes the provided address.
<span class='line'> 36</span> 	 * @name mxn.Geocoder#geocode
<span class='line'> 37</span> 	 * @function
<span class='line'> 38</span> 	 * @param {Object} address Address hash, keys are: street, locality, region, country.
<span class='line'> 39</span> 	 */</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="WHIT">	</span><span
			class="STRN">'geocode'</span><span class="PUNC">,</span><span
			class="WHIT">
<span class='line'> 41</span> </span><span class="WHIT">	</span><span
			class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">	</span><span
			class="STRN">'geocode_callback'</span><span class="WHIT">
<span class='line'> 43</span> 
<span class='line'> 44</span> </span><span class="PUNC">]</span><span
			class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> 
<span class='line'> 46</span> </span><span class="COMM">/**
<span class='line'> 47</span>  * Change the geocoding API in use
<span class='line'> 48</span>  * @name mxn.Geocoder#swap
<span class='line'> 49</span>  * @param {String} api The API to swap to
<span class='line'> 50</span>  */</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="NAME">Geocoder.prototype.swap</span><span
			class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span
			class="KEYW">function</span><span class="PUNC">(</span><span
			class="NAME">api</span><span class="PUNC">)</span><span class="WHIT"> </span><span
			class="PUNC">{</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">	</span><span
			class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span
			class="NAME">this.api</span><span class="WHIT"> </span><span
			class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">api</span><span
			class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span
			class="WHIT"> </span><span class="KEYW">return</span><span
			class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span
			class="WHIT">
<span class='line'> 53</span> 
<span class='line'> 54</span> </span><span class="WHIT">	</span><span
			class="NAME">this.api</span><span class="WHIT"> </span><span
			class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">api</span><span
			class="PUNC">;</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">	</span><span
			class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span
			class="PUNC">!</span><span class="NAME">this.geocoders.hasOwnProperty</span><span
			class="PUNC">(</span><span class="NAME">this.api</span><span
			class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span
			class="PUNC">{</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">		</span><span
			class="NAME">init.apply</span><span class="PUNC">(</span><span
			class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span
			class="WHIT">
<span class='line'> 57</span> </span><span class="WHIT">	</span><span
			class="PUNC">}</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="PUNC">}</span><span
			class="PUNC">;</span><span class="WHIT">
<span class='line'> 59</span> 
<span class='line'> 60</span> </span><span class="PUNC">}</span><span
			class="PUNC">)</span><span class="PUNC">(</span><span class="PUNC">)</span><span
			class="PUNC">;</span>
	</pre>
</body>
</html>